<?php
class TicketsController extends AppController {
    public $helpers = array('Html', 'Form','Session');
    public $components = array('Session','Auth');
    public $uses=array('Ticket','User','Order','Publicpage');
    public $scaffold = 'admin';


    function index(){
      $userid= $this->Auth->User('id');
      $this->set('title_for_layout', 'Отправить запрос в службу поддержки');
      $this->set('user_name_sidebar', AppController::getUserName($userid));
      $this->paginate = array(
        'limit' => 15,
        'order' => array(
            'Ticket.id' => 'desc'
        ),
        'conditions' => array('Ticket.userid =' =>$userid ),
    );

      //$tickets=$this->Ticket->findAllByUserid($userid);
      $tickets=$this->paginate('Ticket');
      $this->set('tickets', $tickets);

      $orders=$this->Order->findAllByUserid($userid);
      $ids=array('0'=>'Укажите ID заказа');
      foreach ($orders as $order)
      {
        $ids[$order['Order']['id']]= $order['Order']['id'];
        $ids[$order['Order']['id']]="Для заказа ID ".$ids[$order['Order']['id']];
      }
      $this->set('ids', $ids);
      $user_data=$this->User->findById($userid);
      $user_login=$user_data['User']['login'];
      $this->set('user_login', $user_login);
    }
    function send(){
      $userid= $this->Auth->User('id');
      if(!isset($this->request->data['Ticket']['userid']))
        $this->request->data['Ticket']['userid']=$userid;
      $this->request->data['Ticket']['time']=time();
      $this->request->data['Ticket']['text']=str_replace("<","&lt;",$this->request->data['Ticket']['text']);
      //$this->request->data['Ticket']['text']=str_replace("\n","</br>",$this->request->data['Ticket']['text']);
      if(strlen($this->request->data['Ticket']['file']['name'])<2)
      {
        unset($this->request->data['Ticket']['file']);
        $this->request->data['Ticket']['file']='0';
      }
      else
      {
        $data=$this->request->data['Ticket']['file'];
        $_FILES['userfile']=$data;
            $messages = array();
            $imgDir = dirname(APP) . "/app/webroot/ticketsfiles/"; // каталог для хранения изображений
            @mkdir($imgDir, 0777); // создаем каталог, если его еще нет
                $data=$this->request->data['Ticket']['file'];
                $_FILES['userfile']=$data;
                $tmp = $data['tmp_name'];  //это просто для удобства
                if (@file_exists($tmp)) {  //итак, если файл на месте, то
                    $info = @getimagesize($_FILES['userfile']['tmp_name']); //берем информацию о файле
                    if (preg_match('{image/(.*)}is', $info['mime'], $p)) {  //убеждаемся что файл есть ни что иное как изображение
                        $newwidth = 7000; //в данную переменную мы помещаем желаемую ширину файла
                        $tempka=explode(".",$data['name']);
                        $tempkacount=count($tempka)-1;
                        $razresh=$tempka[$tempkacount];
                        $newfile=date('YmdHis').rand(100,1000).".".$razresh;//Новый файл, для записи в базу
                        $newname = $imgDir . basename($newfile); //имя файла оставляем прежним
                        //осторожно! если файл с таким именем существует, то он будет перезаписан загружаемым
                          //меньше заданной в переменной, просто сохраняем файл
                          if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newname)) {
                            $messages[] = "Файл успешно загружен. ";
                            $this->request->data['Ticket']['file']="http://radioheart.ru/billing/ticketsfiles/".$newfile;
                          }
                          else {
                            $messages[] = "Ошибка загрузки файла!";
                          }
                    }
                    else {
                        $messages[] = "Ошибка! Попытка загрузить файл недопустимого формата.";
                    }
                }
                else {
                    $messages[] = "Файл не был загружен.";
                }
            $this->set('messages',$messages);
      }
      $this->Ticket->create();
      if ($this->Ticket->save($this->request->data)) {
        $user_data=$this->User->findById($userid);
        $user_login=$user_data['User']['login'];
        $headers= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n";
        $headers.="From: support@radioheart.ru\r\n";
        $message="Новый тикет от ".$user_login;
        mail("germes.07@bk.ru", "RadioHeart - качественный радио хостинг",$message,$headers);
        $this->Session->setFlash(__('Ваше сообщение успешно отправлено'));
        $this->redirect(array('action' => 'index'));
      }
    }
    public function admin_index($useridticket=null){
      $userid= $this->Auth->User('id');
      if(AppController::isAuthorized($userid)){
        if(!isset($useridticket)){
            $this->Ticket->virtualFields['timest'] = 'timest';
            $this->Ticket->virtualFields['maxTid'] = 'maxTid';
            $this->paginate = array(
              'fields' => array('Ticket.id','MAX(Ticket.id) AS maxTid', 'Ticket.userid','MAX(Ticket.time) AS timest','Ticket.back','Ticket.orderid'),
              'limit' => 10,
              'order' => array(
                  'timest' => 'desc',
              ),
              'conditions' => array('Ticket.back =' =>0),
              'group' => array('Ticket.userid'),
            );
          $tickets=$this->paginate('Ticket');
          $counter=0;
          foreach($tickets as $ticket)
          {
            $useridticket=$ticket['Ticket']['userid'];
            $user_data=$this->User->findById($useridticket);
            $maxTid= $ticket[0]['maxTid'];
            $temp_ticket=$this->Ticket->Query("SELECT `text` FROM `tickets` WHERE `id`='{$maxTid}'");
            $tickets[$counter]['Ticket']['text']=$temp_ticket[0]['tickets']['text'];
            $user_login=$user_data['User']['login'];
            $tickets[$counter]['Ticket']['login']=$user_login;
            $tickets[$counter]['Ticket']['time']=$tickets[$counter][0]['timest'];
            $counter++;
          }
          $this->set('tickets', $tickets);
        }
        else
        {
          $this->paginate = array(
              'limit' => 10,
              'order' => array(
                  'Ticket.id' => 'desc'
              ),
              'conditions' => array('Ticket.userid =' =>$useridticket ),
          );
          $tickets=$this->paginate('Ticket');
          $counter=0;
          if(count($tickets)>0)
            $ticket=$tickets[0];
          if($useridticket==null)
            $useridticket=$ticket['Ticket']['userid'];
          $user_data=$this->User->findById($useridticket);
          $user_login=$user_data['User']['login'];
          foreach($tickets as $ticket)
          {
            $tickets[$counter]['Ticket']['login']=$user_login;
            $counter++;
          }
          $this->set('useridticket', $useridticket);
          $this->set('tickets', $tickets);
        }
      }
      else
      {
        //$this->Session->setFlash(__('Ваше сообщение успешно отправлено'));
        $this->redirect(array('action' => 'index'));
      }
    }
    public function admin_send_answer(){
      $userid= $this->request->data['Ticket']['userid'];
      //$this->request->data['Ticket']['userid']=$userid;
      $this->request->data['Ticket']['time']=time();
      if(strlen($this->request->data['Ticket']['file']['name'])<2)
      {
        unset($this->request->data['Ticket']['file']);
        $this->request->data['Ticket']['file']='0';
      }
      else
      {
        $data=$this->request->data['Ticket']['file'];
        $_FILES['userfile']=$data;
            $messages = array();
            $imgDir = dirname(APP) . "/app/webroot/ticketsfiles/"; // каталог для хранения изображений
            @mkdir($imgDir, 0777); // создаем каталог, если его еще нет
                $data=$this->request->data['Ticket']['file'];
                $_FILES['userfile']=$data;
                $tmp = $data['tmp_name'];  //это просто для удобства
                if (@file_exists($tmp)) {  //итак, если файл на месте, то
                    $info = @getimagesize($_FILES['userfile']['tmp_name']); //берем информацию о файле
                    if (preg_match('{image/(.*)}is', $info['mime'], $p)) {  //убеждаемся что файл есть ни что иное как изображение
                        $newwidth = 7000; //в данную переменную мы помещаем желаемую ширину файла
                        $tempka=explode(".",$data['name']);
                        $tempkacount=count($tempka)-1;
                        $razresh=$tempka[$tempkacount];
                        $newfile=date('YmdHis').rand(100,1000).".".$razresh;//Новый файл, для записи в базу
                        $newname = $imgDir . basename($newfile); //имя файла оставляем прежним
                        //осторожно! если файл с таким именем существует, то он будет перезаписан загружаемым
                          //меньше заданной в переменной, просто сохраняем файл
                          if (move_uploaded_file($_FILES['userfile']['tmp_name'], $newname)) {
                            $messages[] = "Файл успешно загружен. ";
                            $this->request->data['Ticket']['file']="http://radioheart.ru/billing/ticketsfiles/".$newfile;
                          }
                          else {
                            $messages[] = "Ошибка загрузки файла!";
                          }
                    }
                    else {
                        $messages[] = "Ошибка! Попытка загрузить файл недопустимого формата.";
                    }
                }
                else {
                    $messages[] = "Файл не был загружен.";
                }
            $this->set('messages',$messages);
      }
      $this->Ticket->create();
      if ($this->Ticket->save($this->request->data)) {
        $user_data=$this->User->findById($userid);
        $user_email=$user_data['User']['email'];
        $headers= "MIME-Version: 1.0\r\n";
        $headers .= "Content-type: text/html; charset=utf-8\r\n";
        $headers.="From: support@radioheart.ru\r\n";
        $message="Сотрудник RadioHeart оставил вам сообщение. Проверьте раздел Тикеты";
        //mail($user_email, "RadioHeart - качественный радио хостинг",$message,$headers);
        $tmp=AppController::send_email($user_email, "RadioHeart - получен ответ на ваш запрос",$message,$headers);
        $this->Session->setFlash(__('Ваше сообщение успешно отправлено'));
        $this->redirect($this->referer());
      }
    }
}


?>